Ext.ns('Descuento');
/*
 * Comienzo creacion de Descuento
 */

/*
 * Crea la Accion para el grid de descuentos
 */

Descuento.Grid = Ext.extend(Ext.grid.GridPanel, {
	width : 850,
	height : 200,
	url : '/cake/syscable/MgDescuentos/buscaDescuento',
	initComponent : function() {
		this.rowActions = new Ext.ux.grid.RowActions({
					header : 'Eliminar',
					autoWidth : false,
					width : 60,
					keepSelection : true,
					actions : [{
								iconIndex : 'action1',
								qtipIndex : 'qtip1',
								iconCls : 'icon-cancel',
								tooltip : 'Eliminar'
							}]
				});
		this.rowActions.on('action', this.onRowAction, this);
		var config = {
			store : new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
							url : this.url
						}),
				reader : new Ext.data.JsonReader({
							id : 'MgDescuento-id',
							root : 'acciones',
							totalProperty : 'total',
							fields : [{
										name : 'MgDescuento-id'
									}, {
										name : 'TcContrato-contrato'
									}, {
										name : 'TcContrato-descripcion'
									}, {
										name : 'MgDescuento-tc_contrato_id'
									}, {
										name : 'MgDescuento-adicionado_por'
									}, {
										name : 'MgDescuento-mg_tipo_descuento_id'
									}, {
										name : 'MgTipoDescuento-descripcion'
									}, {
										name : 'MgDescuento-modificado_por'
									}, {
										name : 'MgDescuento-modified',
										type : 'date',
										dateFormat : 'Y-m-d'
									}, {
										name : 'MgDescuento-created',
										type : 'date',
										dateFormat : 'Y-m-d'
									}, {
										name : 'action1',
										type : 'string'
									}, {
										name : 'qtip1',
										type : 'string'
									}]
						}),
				sm : new Ext.grid.RowSelectionModel({
							singleSelect : true,
							listeners : {
								load : {
									scope : this,
									fn : function() {
										this.getSelectionModel()
												.selectFirstRow();
									}
								}
							}
						})

			}),
			columns : [{
						header : "ID",
						dataIndex : 'MgDescuento-id',
						hidden : true
					}, {
						header : "id. Contrato",
						dataIndex : 'MgDescuento-tc_contrato_id',
						width : 70,
						hidden : true
					}, {
						header : "No. Contrato",
						dataIndex : 'TcContrato-contrato',
						width : 70
					}, {
						header : "Tipo",
						dataIndex : 'MgTipoDescuento-descripcion',
						width : 70
					}, {
						header : "Adicionado Por",
						dataIndex : 'MgDescuento-adicionado_por',
						width : 80
					}, {
						header : "Fecha Creacion",
						dataIndex : 'MgDescuento-created',
						renderer : Ext.util.Format.dateRenderer('d-F-Y'),
						width : 110
					}, this.rowActions],
			stripeRows : true,
			columnLines : true,
			frame : false,
			plugins : [this.rowActions],
			trackMouseOver : false,
			title : 'Descuentos',
			iconCls : 'icon-error',
			viewConfig : {
				forceFit : true
			}
		};

		Ext.apply(this, Ext.apply(this.initialConfig, config));
		this.tbar = new Ext.PagingToolbar({
					pageSize : 5,
					store : this.store,
					displayInfo : true,
					displayMsg : 'Mostrando descuentos del {0} - {1} de {2}',
					emptyMsg : 'No hay descuentos que mostrar'

				});
		Descuento.Grid.superclass.initComponent.apply(this, arguments);
	},
	onRender : function() {
		this.store.load();
		Descuento.Grid.superclass.onRender.apply(this, arguments);
	},
	onRowAction : function(grid, record, action, row, col) {
		switch (action) {
			case 'icon-cancel' :
				var saveData = new Ext.data.Connection().request({
					url : '/cake/syscable/MgDescuentos/deleteExt/'
							+ record.get('MgDescuento-id'),
					success : function(response) {

						if (Ext.decode(response.responseText).success) {
							Ext.MessageBox.alert('Mensaje',
									'Descuento Eliminado Exitosamente');
						} else {
							Ext.MessageBox.alert('Mensaje',
									'Descuento NO Eliminado Exitosamente');
						}

						Ext.getCmp('grdDescuento').store.baseParams['contratoid'] = record
								.get('MgDescuento-tc_contrato_id');
						Ext.getCmp('grdDescuento').store.load({
									params : {
										limit : 5,
										start : 0
									}
								});
					},
					failure : function(response) {
						Ext.MessageBox.alert('Message',
								'ERROR no se elimino el descuento!');
						Ext.getCmp('grdDescuento').store.baseParams['contratoid'] = record
								.get('MgDescuento-tc_contrato_id');
						Ext.getCmp('grdDescuento').store.load({
									params : {
										limit : 5,
										start : 0
									}
								});
					}
				});
				break;

			default :
				Ext.MessageBox.alert('Mensaje', 'Error No existe la accion');
				break;
		}
	}

});
Ext.reg('grdDescuento', Descuento.Grid);

/*
 * Crea los campos y Forma para agregar descuentos
 */

Descuento.cbxTipo = Ext.extend(Ext.form.ComboBox, {
			url : '/cake/syscable/MgDescuentos/combobox/1/MgTipoDescuento/descripcion',
			typeAhead : true,
			allowBlank : false,
			forceSelection : true,
			selectOnFocus : true,
			width : 190,
			minChars : 2,
			lazyRender : true,
			initComponent : function() {
				var config = {
					store : new Ext.data.Store({
								proxy : new Ext.data.HttpProxy({
											url : this.url
										}),
								reader : new Ext.data.JsonReader({
											id : 'id',
											root : 'datos',
											totalProperty : 'total',
											fields : [{
														name : 'id'
													}, {
														name : 'descripcion'
													}]
										})

							}),
					mode : 'local',
					displayField : 'descripcion',
					valueField : 'id',
					loadingText : 'Buscando...',
					fieldLabel : 'Tipo Descuento',
					hiddenName : 'data[MgDescuento][mg_tipo_descuento_id]',
					triggerAction : 'all',
					emptyText : 'Escoja el tipo de descuento...',
					listEmptyText : 'No hay resultados'
				};
				Ext.apply(this, Ext.apply(this.initialConfig, config));
				Descuento.cbxTipo.superclass.initComponent.apply(this,
						arguments);
			},
			onrRender : function() {
				this.store.load();
				Descuento.cbxTipo.superclass.onRender.apply(this, argumentos);
			}
		});
Ext.reg('cbxTipoDescuento', Descuento.cbxTipo);

Descuento.frmAgregarDescuento = Ext.extend(Ext.form.FormPanel, {
	bodyStyle : 'padding: 5px 5px 0',
	frame : false,
	width : 440,
	height : 200,
	id : 'frmAgregarDescuento',
	padre : 'vtnAgregarDescuento',
	grid : 'grdDescuento',
	trackResetOnLoad : true,
	labelWidth : 90,
	labelAlign : 'right',
	algoMas : 'grdDescuento',
	defaultType : 'textfield',
	initComponent : function() {
		var config = {
			buttons : [{
				text : 'Agregar Descuento',
				type : 'submit',
				scope : this,
				handler : function() {
					Ext.getCmp(this.id).form.submit({
						timeout : 350,
						waitMsg : 'Porfavor Espere',
						waitTitle : 'Guardando Datos',
						scope : this,
						url : '/cake/syscable/MgDescuentos/insertarExt',
						success : function(form, action) {
							Ext.Msg.show({
										title : 'Mensaje',
										msg : 'Descuento Agregado exitosamente!',
										buttons : Ext.Msg.OK,
										scope : this,
										fn : function() {
											Ext.getCmp(this.id).getForm()
													.reset();
											Ext.getCmp(this.padre).close();
											Ext.getCmp(this.grid).store.load();
										}
									});
						},
						failure : function() {
							Ext.MessageBox
									.alert('Mensaje', 'Error al Guardar!');
						}
					});
				}
			}],
			items : [{
						xtype : 'textfield',
						id : 'tfIdContratoAgregarDescuento',
						fieldLabel : 'Id. Contrato',
						name : 'data[MgDescuento][tc_contrato_id]',
						allowBlank : false,
						hideLabel : true,
						hidden : true,
						blankText : 'No puede estar vacio'
					}, {
						xtype : 'textfield',
						id : 'tfNoContratoAgregarDescuento',
						fieldLabel : 'No. Contrato',
						name : 'data[TcContrato][contrato]',
						allowBlank : false,
						disabled : true,
						blankText : 'No puede estar vacio'
					}, {
						xtype : 'textfield',
						id : 'tfDescripcionContratoAgregarDescuento',
						fieldLabel : 'Descripcion Contrato',
						name : 'data[TcContrato][descripion]',
						allowBlank : false, // hidden : true,
						blankText : 'No puede estar vacio',
						disabled : true

					}, {
						xtype : 'cbxTipoDescuento',
						id : 'cbxTipoDescuento'
					}]
		};
		Ext.apply(this, Ext.apply(this.initialConfig, config));
		Descuento.frmAgregarDescuento.superclass.initComponent.apply(this,
				arguments);
	},
	onRender : function() {
		Ext.getCmp('cbxTipoDescuento').store.load();
		Descuento.frmAgregarDescuento.superclass.onRender
				.apply(this, arguments);
	}
});
Ext.reg('frmAgregarDescuento', Descuento.frmAgregarDescuento);

/*
 * FINALIZA CREACION DE DESCUENTO
 * 
 */